home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / ABUSESRC.ZIP / AbuseSrc / macabuse / imlib / include / scroller.hpp < prev    next >
C/C++ Source or Header  |  1997-05-20  |  5KB  |  113 lines

  1. #ifndef _SCROLLER_HPP_
  2. #define _SCROLLER_HPP_
  3.  
  4. #include "input.hpp"
  5.  
  6. class scroller : public ifield
  7. {
  8. protected :
  9.   int l,h,drag,vert,last_click;
  10.  
  11.   int bh();
  12.   int bw();
  13.   void drag_area(int &x1, int &y1, int &x2, int &y2);
  14.   void dragger_area(int &x1, int &y1, int &x2, int &y2);
  15.   int b1x() { if (vert) return x+l; else return x; }
  16.   int b1y() { if (vert) return y; else return y+h; }
  17.   int b2x() { if (vert) return x+l; else return x+l-bw(); }
  18.   int b2y() { if (vert) return y+h-bh(); else return y+h; }
  19.   unsigned char *b1();
  20.   unsigned char *b2();
  21.   void wig_area(int &x1, int &y1, int &x2, int &y2);
  22.  
  23.  
  24.   int wig_x();
  25.   int darea() { return (l-bw()-2)-bw()-bw(); }
  26.   void draw_wiget(image *screen, window_manager *wm, int erase);
  27.   int mouse_to_drag(int mx,int my);
  28. public :
  29.   int t,sx;
  30.   scroller(int X, int Y, int ID, int L, int H, int Vert, int Total_items, ifield *Next);
  31.   virtual void area(int &x1, int &y1, int &x2, int &y2, window_manager *wm);
  32.   virtual void draw_first(image *screen, window_manager *wm);
  33.   virtual void draw(int active, image *screen, window_manager *wm);
  34.   virtual void handle_event(event &ev, image *screen, window_manager *wm, input_manager *im);
  35.   virtual char *read() { return (char *)&sx; }
  36.  
  37.   virtual int activate_on_mouse_move() { return 1; }
  38.   virtual void handle_inside_event(event &ev, image *screen, window_manager *wm, input_manager *inm) {;}
  39.   virtual void scroll_event(int newx, image *screen, window_manager *wm);
  40.   virtual void handle_up(image *screen, window_manager *wm, input_manager *inm);
  41.   virtual void handle_down(image *screen, window_manager *wm, input_manager *inm);
  42.   virtual void handle_left(image *screen, window_manager *wm, input_manager *inm);
  43.   virtual void handle_right(image *screen, window_manager *wm, input_manager *inm);
  44.   virtual void area_config(window_manager *wm) { ; }
  45.   void set_size(int width, int height) { l=width; h=height; }
  46.   virtual void set_x(int x, image *screen, window_manager *wm);
  47. } ;
  48.  
  49. class spicker : public scroller
  50. {
  51.   protected :
  52.   int r,c,m,last_sel,cur_sel;
  53.   uchar *select;
  54.   public :
  55.   spicker(int X, int Y, int ID, int Rows, int Cols, int Vert, int MultiSelect, ifield *Next);
  56.   int vis() { if (vert) return r; else return c; }
  57.   virtual void area_config(window_manager *wm);
  58.   void set_select(int x, int on);
  59.   int get_select(int x);
  60.   int first_selected();
  61.   virtual void scroll_event(int newx, image *screen, window_manager *wm);
  62.   virtual void handle_inside_event(event &ev, image *screen, window_manager *wm, input_manager *inm);
  63.  
  64.   // you should define \/
  65.   virtual void draw_background(window_manager *wm, image *screen);
  66.   virtual void draw_item(window_manager *wm, image *screen, int x, int y, int num, int active) = 0;
  67.   virtual int total() = 0;
  68.   virtual int item_width(window_manager *wm) = 0;
  69.   virtual int item_height(window_manager *wm) = 0;
  70.   virtual void note_selection(window_manager *wm, image *screen, input_manager *inm, int x) { ; }
  71.   virtual void note_new_current(window_manager *wm, image *screen, input_manager *inm, int x) { ; }
  72.   virtual int ok_to_select(int num) { return 1; }
  73.   virtual void handle_up(image *screen, window_manager *wm, input_manager *inm);
  74.   virtual void handle_down(image *screen, window_manager *wm, input_manager *inm);
  75.   virtual void handle_left(image *screen, window_manager *wm, input_manager *inm);
  76.   virtual void handle_right(image *screen, window_manager *wm, input_manager *inm);
  77.   virtual void set_x(int x, image *screen, window_manager *wm);
  78.   void reconfigure();   // should be called by constructor after class is ready to take virtual calls
  79.   ~spicker() { if (select) jfree(select); }
  80. } ; 
  81.  
  82. struct pick_list_item
  83. {
  84.   char *name;
  85.   int number;
  86. } ;
  87.  
  88. class pick_list : public scroller
  89. {
  90.   int last_sel,cur_sel,th,wid;
  91.   pick_list_item *lis;
  92.   char key_hist[20],key_hist_total;
  93.   image *tex;
  94.   public :
  95.   pick_list(int X, int Y, int ID, int height,
  96.         char **List, int num_entries, int start_yoffset, ifield *Next, image *texture=NULL);
  97.   virtual void handle_inside_event(event &ev, image *screen, window_manager *wm, input_manager *inm);
  98.   virtual void scroll_event(int newx, image *screen, window_manager *wm);
  99.   virtual char *read() { return (char *)this; }
  100.   virtual void area_config(window_manager *wm);
  101.   virtual void handle_up(image *screen, window_manager *wm, input_manager *inm);
  102.   virtual void handle_down(image *screen, window_manager *wm, input_manager *inm);
  103.   int get_selection() { return lis[cur_sel].number; }
  104.   ~pick_list() { jfree(lis); }
  105. } ;
  106.  
  107. #endif
  108.  
  109.  
  110.  
  111.  
  112.  
  113.